//
//  HJJsApiTest.h
//  project
//
//  Created by yefei on 2019/8/3.
//  Copyright © 2019 健健. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "dsbridge.h"

typedef void (^successBlock)(NSDictionary * _Nullable responseObject,BOOL isSuccess);
typedef void (^failureBlock)(NSError * _Nullable error);

@protocol HJJsTestDelegate <NSObject>
@optional
/**
 返回后刷新界面代理
 */
-(void)shareView;


@end

@interface HJJsApiTest : NSObject

@property (nonatomic,weak) id<HJJsTestDelegate> _Nullable delegate;
//同步API
/**
 给js提供token
 @param msg 默认值
 @return token
 */
- (NSString * _Nonnull)callToken:(NSString *_Nonnull )msg;

/**
 给js提供userId
 @param msg 默认值
 @return userId
 */
- (NSString * _Nonnull)callUserId:(NSString *_Nonnull)msg;

/**
 是否分享
 @param msg 默认值
 */
- (void)callShare:(NSString *_Nonnull)msg;

/**
 给JS提供user实体
 @param msg 默认值
 @return user json字符串
 */
-(NSString * _Nonnull)callUser:(NSString * _Nonnull)msg;

/**
 push到添加银行卡控制器
 */
- (void)pushToAddBankCardVC:(NSString *_Nonnull)msg completionHandler:(JSCallback _Nullable)completionHandler;

/**
 js异步
 @param msg 参数信息
 @param completionHandler 回调
 */
- (void)request:(NSDictionary *_Nonnull)msg completionHandler:(JSCallback _Nullable )completionHandler;

/**
 js请求网络 调取服务
 @param url 地址
 @param param 请求参数
 @param timeout 请求超时服务
 @param header 请求头
 @param contentType 请求数据返回类型
 @param completionHandler 请求成功
 @param errorHandler 请求失败
 */
- (void)postWithUrl:(NSString *_Nonnull)url param:(NSDictionary * _Nonnull)param timeout:(NSInteger)timeout header:(NSDictionary *_Nullable)header contentType:(NSString *_Nullable)contentType completionHandler:(successBlock _Nonnull)completionHandler errorHandler:(failureBlock _Nullable)errorHandler;

/**
 GET请求
 @param url 地址
 @param param 请求参数
 @param timeout 请求超时服务
 @param header 请求头
 @param contentType 请求数据返回类型
 @param completionHandler 请求成功
 @param errorHandler 请求失败
 */
- (void)getWithUrl:(NSString *_Nonnull)url param:(NSDictionary *_Nonnull)param timeout:(NSInteger)timeout header:(NSDictionary *_Nullable)header contentType:(NSString *_Nullable)contentType completionHandler:(successBlock _Nullable)completionHandler errorHandler:(failureBlock _Nullable)errorHandler;

@end
